const db = require('../models/db');
const md5 = require('blueimp-md5');
const moment =require('moment');
const {imgPath} = require('../public/js/common')
//获取用户状态
exports.get = async (req,res,next)=>{
  // console.log('获取会话状态',req.session);
  const {sessionUser} = req.session;
   if(!sessionUser){
     return res.status(401).json({
       error:'Unauthorized'
     })
   }
  const sqlStr = `SELECT * FROM users WHERE id=${sessionUser.id}`;
  const [user] = await db.query(sqlStr);
  //返回给前端之前处理格式化时间
  user.create_time = moment(user.create_time).format('YYYY-MM-DD HH:mm:ss');
  user.modify_time = moment(user.modify_time).format('YYYY-MM-DD HH:mm:ss');
  user.birthday = moment(user.birthday).format('YYYY-MM-DD HH:mm:ss');
  user.avatar = imgPath+ user.avatar;
  res.status(200).json(user)
};

//用户登录
exports.create = async (req,res,next)=>{
  // console.log('a')
   //接受表单数据
   //操作数据库处理登录请求
   //发送响应
   try {
     const body = req.body;
     body.password = md5(md5(body.password));
     const sqlStr = `SELECT * FROM users WHERE email='${body.email}' and password ='${body.password}'`
     //数组的结构赋值
     const [user] = await db.query(sqlStr);
     //user是RowDataPacket类型
     // console.log(user)
     if(!user){
       return res.status(404).json({
         error:'Invalid email or password!'
       })
     }
     user.avatar = imgPath+ user.avatar;
     //登陆成功，记录sessionUser
     req.session.sessionUser = user;
     // console.log('登录成功之后记录的session',req.session)
     //发送响应

     res.status(201).json(user)
   } catch (err) {
     next(err)
   }
};


//注销登录
exports.destroy = (req,res,next)=>{
    // console.log(req.session)
    // 这里需要删除session中的sessionUser 而不是删除整个session
    // 不然会出现明明删除了session，但是调用获取登录状态的session的时候仍然存在session的问题
    delete req.session.sessionUser;
    // console.log('退出之后的session',req.session);
    //返回空对象
    res.status(201).json({})
};